package middleware

import (
	"net/http"
	"supershare/backend/models"

	"github.com/beego/beego/v2/server/web/context"
)

func AppAuthMiddleware() func(ctx *context.Context) {
	return func(ctx *context.Context) {
		appId := ctx.Input.Header("Appid")
		if appId == "" {
			ctx.Output.SetStatus(http.StatusUnauthorized)
			ctx.Output.JSON(map[string]interface{}{
				"success": false,
				"message": "请求头缺少Appid",
			}, false, false)
			return
		}

		// 从数据库或其他配置中验证AppID
		config, err := models.GetMiniprogramConfigByAppId(appId)
		if err != nil || config == nil {
			ctx.Output.SetStatus(http.StatusUnauthorized)
			ctx.Output.JSON(map[string]interface{}{
				"success": false,
				"message": "无效的Appid",
			}, false, false)
			return
		}

		// 将验证过的配置信息存入context，方便后续处理函数使用
		ctx.Input.SetData("miniprogramConfig", config)
	}
}

// GetCurrentMiniprogramConfig 获取当前小程序配置信息信息
func GetCurrentMiniprogramConfig(ctx *context.Context) *models.MiniprogramConfig {
	// 从上下文中获取用户ID
	config, ok := ctx.Input.GetData("miniprogramConfig").(*models.MiniprogramConfig)
	if !ok {
		return nil
	}

	// 获取管理员信息
	return config
}
